{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim\n",
    "import torchvision\n",
    "from torchvision import datasets, transforms\n",
    "from torch.utils.data import DataLoader, Dataset\n",
    "import h5py\n",
    "import itertools\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import colors\n",
    "from IPython import display\n",
    "import os\n",
    "from PIL import Image\n",
    "from torch.utils.data.dataset import Dataset\n",
    "from matplotlib.pyplot import imread\n",
    "import glob\n",
    "import os\n",
    "import random\n",
    "import pandas as pd\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "\n",
    "import torch.nn as nn\n",
    "from torchvision.models import alexnet, vgg16, resnet152, resnet18, vgg19\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "\n",
    "import torch.nn.functional as nnf\n",
    "from torch.utils.data import random_split\n",
    "from torch.optim import SGD \n",
    "from torch.distributions import constraints\n",
    "import torchvision as torchv\n",
    "import torchvision.transforms as torchvt\n",
    "import pickle\n",
    "\n",
    "from sklearn.metrics import classification_report, recall_score, f1_score\n",
    "from sklearn.metrics import confusion_matrix\n",
    "import time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Function for moving tensor or model to GPU\n",
    "def cuda(xs):\n",
    "    if torch.cuda.is_available():\n",
    "        if not isinstance(xs, (list, tuple)):\n",
    "            return xs.cuda()\n",
    "        else:\n",
    "            return [x.cuda() for x in xs]\n",
    "    else:\n",
    "        return xs\n",
    "\n",
    "# Custom class for defining dataset for training with augmentation\n",
    "class Dataset_Hdf5(Dataset):\n",
    "    def __init__(self, path, data_type):\n",
    "        \"\"\" Intialize the dataset\n",
    "        \"\"\"\n",
    "        self.path = path\n",
    "        self.file = h5py.File(path, 'r')\n",
    "        self.images = self.file['x_{}'.format(data_type)]\n",
    "        self.labels = self.file['y_{}'.format(data_type)]\n",
    "                \n",
    "        self.len = self.images.shape[0]\n",
    "        if data_type == 'train':\n",
    "            # no augmentation as we are transforming heartbeats to images via gramian angular field\n",
    "            self.transform = transforms.Compose([transforms.ToTensor()])\n",
    "        else:\n",
    "            self.transform = transforms.Compose([transforms.ToTensor()])\n",
    "\n",
    "    # You must override __getitem__ and __len__\n",
    "    def __getitem__(self, index):\n",
    "        \"\"\" Get a sample from the dataset\n",
    "        \"\"\"\n",
    "        # unsqueeze adds dimension to image -> converts to 1x224x224 since we don't have rgb\n",
    "        return self.transform(self.images[index].astype('float32')), \\\n",
    "                torch.tensor(self.labels[index], dtype=torch.long)\n",
    "\n",
    "    def __len__(self):\n",
    "        \"\"\"\n",
    "        Total number of samples in the dataset\n",
    "        \"\"\"\n",
    "        return self.len\n",
    "    \n",
    "# Custom class for defining dataset for training with augmentation\n",
    "class Dataset_Hdf5_3C(Dataset):\n",
    "\n",
    "    def __init__(self, path, data_type):\n",
    "        \"\"\" Intialize the dataset\n",
    "        \"\"\"\n",
    "        self.path = path\n",
    "        self.file = h5py.File(path, 'r')\n",
    "        self.images = self.file['x_{}'.format(data_type)]\n",
    "        self.labels = self.file['y_{}'.format(data_type)]\n",
    "        self.len = self.images.shape[0]\n",
    "\n",
    "    # You must override __getitem__ and __len__\n",
    "    def __getitem__(self, index):\n",
    "        \"\"\" Get a sample from the dataset\n",
    "        \"\"\"\n",
    "        # unsqueeze adds dimension to image -> converts to 1x224x224 since we don't have rgb\n",
    "        return torch.tensor(self.images[index].astype('float32')), \\\n",
    "                torch.tensor(self.labels[index], dtype=torch.long)\n",
    "\n",
    "    def __len__(self):\n",
    "        \"\"\"\n",
    "        Total number of samples in the dataset\n",
    "        \"\"\"\n",
    "        return self.len    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Yeah sorry, desktop is configured with my husband's name\n",
    "\n",
    "# hb_train_loader = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih.hdf5', 'train'), \n",
    "#                                                 batch_size=256, shuffle=True)\n",
    "# hb_test_loader = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hb_train_loader_bln = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced.hdf5', 'train'), \n",
    "#                                                 batch_size=512, shuffle=True)\n",
    "# hb_test_loader_bln = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hb_train_loader_bln_2 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_2.hdf5', 'train'), \n",
    "#                                                 batch_size=512, shuffle=True)\n",
    "# hb_test_loader_bln_2 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_2.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hb_train_loader_bln_3 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_3.hdf5', 'train'), \n",
    "#                                                 batch_size=512, shuffle=True)\n",
    "# hb_test_loader_bln_3 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_3.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hb_train_loader_bln_4 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_rp.hdf5', 'train'), \n",
    "#                                                 batch_size=512, shuffle=True)\n",
    "# hb_test_loader_bln_4 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_rp.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# hb_train_loader_bln_5 = torch.utils.data.DataLoader(Dataset_Hdf5_3C('/home/asif/heartbeat/hb_data_mit_bih_balanced_mixed.hdf5', 'train'), \n",
    "#                                                 batch_size=512, shuffle=True)\n",
    "# hb_test_loader_bln_5 = torch.utils.data.DataLoader(Dataset_Hdf5_3C('/home/asif/heartbeat/hb_data_mit_bih_balanced_mixed.hdf5', 'test'), \n",
    "#                                                 batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "hb_train_loader_bln_6 = torch.utils.data.DataLoader(Dataset_Hdf5_3C('/home/asif/heartbeat/hb_data_mit_bih_balanced_gaf_rp_mtf.hdf5', 'train'), \n",
    "                                                batch_size=512, shuffle=True)\n",
    "hb_test_loader_bln_6 = torch.utils.data.DataLoader(Dataset_Hdf5_3C('/home/asif/heartbeat/hb_data_mit_bih_balanced_gaf_rp_mtf.hdf5', 'test'), \n",
    "                                                batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "hb_train_loader_bln_7 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_mtf.hdf5', 'train'), \n",
    "                                                batch_size=512, shuffle=True)\n",
    "hb_test_loader_bln_7 = torch.utils.data.DataLoader(Dataset_Hdf5('/home/asif/heartbeat/hb_data_mit_bih_balanced_mtf.hdf5', 'test'), \n",
    "                                                batch_size=256, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ResNet(\n",
       "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
       "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (relu): ReLU(inplace=True)\n",
       "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "  (layer1): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer2): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer3): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer4): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace=True)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
       "  (fc): Sequential(\n",
       "    (0): Linear(in_features=512, out_features=256, bias=False)\n",
       "    (1): ReLU()\n",
       "    (2): Linear(in_features=256, out_features=128, bias=True)\n",
       "    (3): ReLU()\n",
       "    (4): Linear(in_features=128, out_features=5, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res_net = resnet18(pretrained=True)\n",
    "# First we freeze all layers\n",
    "for param in res_net.parameters():\n",
    "    param.requires_grad = False # frozen layer\n",
    "\n",
    "# Now we make later layers trainable\n",
    "for param in res_net.layer4.parameters():\n",
    "    param.requires_grad = True\n",
    "for param in res_net.layer3.parameters():\n",
    "    param.requires_grad = True\n",
    "for param in res_net.avgpool.parameters():\n",
    "    param.requires_grad = True\n",
    "    \n",
    "# Parameters of newly constructed modules have requires_grad=True by default\n",
    "num_ftrs = res_net.fc.in_features\n",
    "# Replace 1 FC with 3 new FC\n",
    "res_net.fc = nn.Sequential(\n",
    "                nn.Linear(in_features=num_ftrs, out_features=256, bias=False),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=256, out_features=128, bias=True),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=128, out_features=5, bias=True))\n",
    " \n",
    "# Move ResNet to GPU\n",
    "res_net.cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Since 2nd and 4th classes contained less data we assign more weights to them\n",
    "class_weights = cuda(torch.tensor([1.0,2.0, 1.0, 2.0, 1.0]))\n",
    "criterion = nn.CrossEntropyLoss(weight=class_weights)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "optimizer_res_net = torch.optim.Adam([\n",
    "                                          {\"params\": res_net.layer3.parameters(), \"lr\": 0.0001},\n",
    "                                          {\"params\": res_net.layer4.parameters(), \"lr\": 0.0001},\n",
    "                                          {\"params\": res_net.avgpool.parameters(), \"lr\": 0.0001},    \n",
    "                                          {\"params\": res_net.fc[0].parameters(), \"lr\": 0.0001},\n",
    "                                          {\"params\": res_net.fc[2].parameters(), \"lr\": 0.001},\n",
    "                                          {\"params\": res_net.fc[4].parameters(), \"lr\": 0.002},\n",
    "                                           ],  \n",
    "                                lr=0.0001, betas=(0.5, 0.999))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(net, train_loader, criterion, optimizer, test_loader, num_epochs=25):\n",
    "    net.train()\n",
    "    train_acc_max = 0\n",
    "    test_acc_max = 0\n",
    "    recall_max = 0\n",
    "    f1_max = 0\n",
    "\n",
    "    scheduler = optim.lr_scheduler.ExponentialLR(optimizer, gamma = 0.95)\n",
    "    \n",
    "    for epoch in range(num_epochs):  # loop over the dataset multiple times\n",
    "        \n",
    "        net.train()\n",
    "\n",
    "        total = 0\n",
    "        correct = 0\n",
    "   \n",
    "        running_loss = 0.0\n",
    "    \n",
    "        for i, data in enumerate(train_loader, 0):\n",
    "            \n",
    "            # get the inputs; data is a list of [inputs, labels]\n",
    "            inputs, labels = cuda(data)\n",
    "\n",
    "            # zero the parameter gradients\n",
    "            optimizer.zero_grad()\n",
    "\n",
    "            # forward + backward + optimize\n",
    "            # outputs = net(inputs.expand(-1, 3, -1, -1)) # converting to RGB, when we need single channel\n",
    "            outputs = net(inputs) # already in RGB, when we need 3 channels\n",
    "            loss = criterion(outputs, labels)\n",
    "            _, predicted = torch.max(outputs, 1)\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "            \n",
    "            loss.backward()\n",
    "            optimizer.step()\n",
    "\n",
    "            # print statistics\n",
    "            running_loss += loss.item()\n",
    "        \n",
    "        scheduler.step()\n",
    "        \n",
    "        print('End of epoch {}, Loss {}'.format(epoch + 1, running_loss / len(train_loader)))\n",
    "        \n",
    "        train_acc = correct / total\n",
    "        print('Train accuracy: {}'.format(train_acc))\n",
    "        test_acc, all_true, all_pred = test(net, test_loader)\n",
    "        print('Test accuracy: {}'.format(test_acc))\n",
    "        print(classification_report(all_true, all_pred, target_names=['N', 'S', 'V', 'F', 'Q']))\n",
    "        recall = recall_score(all_true, all_pred, average='macro')\n",
    "        f1 = f1_score(all_true, all_pred, average='macro')\n",
    "        \n",
    "        # Saving best checkpoint based on performance on test data            \n",
    "        if recall > recall_max:\n",
    "            recall_max = recall\n",
    "            save_checkpoint(epoch + 1, net, optimizer, train_acc, test_acc, recall, f1, 'res_net', 'mtf_gaf_rp_test_recall')\n",
    "            \n",
    "        if f1 > f1_max:\n",
    "            f1_max = f1\n",
    "            save_checkpoint(epoch + 1, net, optimizer, train_acc, test_acc, recall, f1, 'res_net', 'mtf_gaf_rp_test_f1')\n",
    "\n",
    "    print('Finished Training')\n",
    "    \n",
    "def test(net, test_loader):\n",
    "    net.eval()\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    all_true = []\n",
    "    all_pred = []\n",
    "    with torch.no_grad():\n",
    "        for i, data in enumerate(test_loader, 0):\n",
    "            images, labels = cuda(data)\n",
    "            #  images, labels = data\n",
    "            all_true.extend(labels.cpu().tolist())\n",
    "            #  outputs = net(images.expand(-1, 3, -1, -1))\n",
    "            outputs = net(images)\n",
    "            _, predicted = torch.max(outputs, 1)\n",
    "            all_pred.extend(predicted.cpu().tolist())\n",
    "            total += labels.size(0)\n",
    "            correct += (predicted == labels).sum().item()\n",
    "\n",
    "    acc = correct / total\n",
    "    # print('Accuracy of the network on the images: %d %%' % (100 * acc))\n",
    "    return acc, all_true, all_pred\n",
    "\n",
    "def save_checkpoint(epoch, net, optimizer, train_acc, test_acc, recall, f1, net_name, param):\n",
    "    checkpoint = {\n",
    "        'net': net.state_dict(),\n",
    "        'optimizer': optimizer.state_dict(),\n",
    "        'train_acc': train_acc,\n",
    "        'test_acc': test_acc,\n",
    "        'recall': recall,\n",
    "        'f1': f1\n",
    "    }\n",
    "    torch.save(checkpoint, '{}_{}_best.chk'.format(net_name, param))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of epoch 1, Loss 0.10189058480084243\n",
      "Train accuracy: 0.9631733247633977\n",
      "Test accuracy: 0.9846976064315732\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.82      0.83      0.83       556\n",
      "           V       0.98      0.95      0.96      1448\n",
      "           F       0.74      0.85      0.79       162\n",
      "           Q       0.99      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.98     21892\n",
      "   macro avg       0.91      0.92      0.91     21892\n",
      "weighted avg       0.98      0.98      0.98     21892\n",
      "\n",
      "End of epoch 2, Loss 0.012867982181307903\n",
      "Train accuracy: 0.9955663699982291\n",
      "Test accuracy: 0.9862050063950302\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      1.00      0.99     18118\n",
      "           S       0.90      0.80      0.85       556\n",
      "           V       0.97      0.96      0.96      1448\n",
      "           F       0.79      0.86      0.82       162\n",
      "           Q       0.99      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.93      0.92      0.92     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "End of epoch 3, Loss 0.006320011761780178\n",
      "Train accuracy: 0.9979733851027408\n",
      "Test accuracy: 0.9836469943358305\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.84      0.83      0.83       556\n",
      "           V       0.96      0.95      0.96      1448\n",
      "           F       0.69      0.88      0.77       162\n",
      "           Q       0.98      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.98     21892\n",
      "   macro avg       0.89      0.93      0.91     21892\n",
      "weighted avg       0.98      0.98      0.98     21892\n",
      "\n",
      "End of epoch 4, Loss 0.0035181999533814567\n",
      "Train accuracy: 0.9987800958870867\n",
      "Test accuracy: 0.9627261099945186\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.97      0.98     18118\n",
      "           S       0.77      0.84      0.81       556\n",
      "           V       0.94      0.96      0.95      1448\n",
      "           F       0.23      0.84      0.36       162\n",
      "           Q       0.99      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.96     21892\n",
      "   macro avg       0.79      0.92      0.82     21892\n",
      "weighted avg       0.98      0.96      0.97     21892\n",
      "\n",
      "End of epoch 5, Loss 0.004510962960433141\n",
      "Train accuracy: 0.9984849577952528\n",
      "Test accuracy: 0.9835556367622876\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.77      0.85      0.81       556\n",
      "           V       0.96      0.97      0.96      1448\n",
      "           F       0.77      0.86      0.82       162\n",
      "           Q       1.00      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.98     21892\n",
      "   macro avg       0.90      0.93      0.91     21892\n",
      "weighted avg       0.98      0.98      0.98     21892\n",
      "\n",
      "End of epoch 6, Loss 0.0032791205298261217\n",
      "Train accuracy: 0.9988981511238203\n",
      "Test accuracy: 0.9865247579024301\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.88      0.82      0.85       556\n",
      "           V       0.97      0.96      0.97      1448\n",
      "           F       0.83      0.81      0.82       162\n",
      "           Q       0.99      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.93      0.92      0.92     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "End of epoch 7, Loss 0.004957177723102501\n",
      "Train accuracy: 0.9985308681650937\n",
      "Test accuracy: 0.98684450940983\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.87      0.84      0.85       556\n",
      "           V       0.97      0.96      0.97      1448\n",
      "           F       0.83      0.85      0.84       162\n",
      "           Q       1.00      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.93      0.93      0.93     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "End of epoch 8, Loss 0.0013780436193218026\n",
      "Train accuracy: 0.9995736894229067\n",
      "Test accuracy: 0.9860679700347159\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      1.00      0.99     18118\n",
      "           S       0.86      0.81      0.83       556\n",
      "           V       0.98      0.96      0.97      1448\n",
      "           F       0.87      0.78      0.82       162\n",
      "           Q       1.00      0.98      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.94      0.90      0.92     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "End of epoch 9, Loss 0.002270223328043553\n",
      "Train accuracy: 0.9992391995854949\n",
      "Test accuracy: 0.9860222912479445\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.85      0.83      0.84       556\n",
      "           V       0.97      0.96      0.96      1448\n",
      "           F       0.86      0.82      0.84       162\n",
      "           Q       0.99      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.93      0.92      0.93     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "End of epoch 10, Loss 0.0019223625460116998\n",
      "Train accuracy: 0.9994031651920693\n",
      "Test accuracy: 0.9860222912479445\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           N       0.99      0.99      0.99     18118\n",
      "           S       0.84      0.83      0.83       556\n",
      "           V       0.98      0.96      0.97      1448\n",
      "           F       0.86      0.81      0.84       162\n",
      "           Q       1.00      0.99      0.99      1608\n",
      "\n",
      "    accuracy                           0.99     21892\n",
      "   macro avg       0.93      0.92      0.92     21892\n",
      "weighted avg       0.99      0.99      0.99     21892\n",
      "\n",
      "Finished Training\n"
     ]
    }
   ],
   "source": [
    "train(res_net, hb_train_loader_bln_6, criterion, optimizer_res_net, hb_test_loader_bln_6, 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ResNet(\n",
       "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
       "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (relu): ReLU(inplace)\n",
       "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "  (layer1): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer2): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer3): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer4): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
       "  (fc): Sequential(\n",
       "    (0): Linear(in_features=512, out_features=256, bias=False)\n",
       "    (1): ReLU()\n",
       "    (2): Linear(in_features=256, out_features=128, bias=True)\n",
       "    (3): ReLU()\n",
       "    (4): Linear(in_features=128, out_features=5, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ckpt_recall = torch.load('res_net_test_recall_best_cmb.chk')\n",
    "res_net_saved_recall = resnet18(pretrained=True)\n",
    "for param in res_net_saved_recall.parameters():\n",
    "    param.requires_grad = False\n",
    "    \n",
    "num_ftrs = res_net_saved_recall.fc.in_features\n",
    "res_net_saved_recall.fc = nn.Sequential(\n",
    "                nn.Linear(in_features=num_ftrs, out_features=256, bias=False),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=256, out_features=128, bias=True),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=128, out_features=5, bias=True))\n",
    "res_net_saved_recall.load_state_dict(ckpt_recall['net'])\n",
    "res_net_saved_recall.cuda()    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "ResNet(\n",
       "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
       "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (relu): ReLU(inplace)\n",
       "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
       "  (layer1): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer2): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer3): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (layer4): Sequential(\n",
       "    (0): BasicBlock(\n",
       "      (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (downsample): Sequential(\n",
       "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
       "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      )\n",
       "    )\n",
       "    (1): BasicBlock(\n",
       "      (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "      (relu): ReLU(inplace)\n",
       "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
       "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    )\n",
       "  )\n",
       "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
       "  (fc): Sequential(\n",
       "    (0): Linear(in_features=512, out_features=256, bias=False)\n",
       "    (1): ReLU()\n",
       "    (2): Linear(in_features=256, out_features=128, bias=True)\n",
       "    (3): ReLU()\n",
       "    (4): Linear(in_features=128, out_features=5, bias=True)\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ckpt_f1 = torch.load('res_net_test_f1_best_cmb.chk')\n",
    "res_net_saved_f1 = resnet18(pretrained=True)\n",
    "for param in res_net_saved_f1.parameters():\n",
    "    param.requires_grad = False\n",
    "    \n",
    "num_ftrs = res_net_saved_f1.fc.in_features\n",
    "res_net_saved_f1.fc = nn.Sequential(\n",
    "                nn.Linear(in_features=num_ftrs, out_features=256, bias=False),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=256, out_features=128, bias=True),\n",
    "                nn.ReLU(),\n",
    "                nn.Linear(in_features=128, out_features=5, bias=True))\n",
    "res_net_saved_f1.load_state_dict(ckpt_f1['net'])\n",
    "res_net_saved_f1.cuda()   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.977023570253974,\n",
       " [0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  ...],\n",
       " [0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  3,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  4,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  3,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  ...])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Predict test values\n",
    "test_acc_r, all_true_r, all_pred_r = test(res_net_saved_recall, hb_test_loader_bln_5)\n",
    "test_acc_r, all_true_r, all_pred_r "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.9859766124611731,\n",
       " [0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  ...],\n",
       " [0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  2,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  4,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  1,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  0,\n",
       "  ...])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_acc_f, all_true_f, all_pred_f = test(res_net_saved_f1, hb_test_loader_bln_5)\n",
    "test_acc_f, all_true_f, all_pred_f"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# From sklearn\n",
    "def plot_confusion_matrix(cm, classes,\n",
    "                          normalize=False,\n",
    "                          title='Confusion matrix',\n",
    "                          cmap=plt.cm.Blues):\n",
    "    \"\"\"\n",
    "    This function prints and plots the confusion matrix.\n",
    "    Normalization can be applied by setting `normalize=True`.\n",
    "    \"\"\"\n",
    "\n",
    "    if normalize:\n",
    "        cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n",
    "        print(\"Normalized confusion matrix\")\n",
    "    else:\n",
    "        print('Confusion matrix, without normalization')\n",
    "\n",
    "    print(cm)\n",
    "    \n",
    "    plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
    "    plt.title(title)\n",
    "    plt.colorbar()\n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks, classes, rotation=0)\n",
    "    plt.yticks(tick_marks, classes)\n",
    "\n",
    "    fmt = '.2f' if normalize else 'd'\n",
    "    thresh = cm.max() / 2.\n",
    "    for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
    "        plt.text(j, i, format(cm[i, j], fmt),\n",
    "                 horizontalalignment=\"center\",\n",
    "                 color=\"white\" if cm[i, j] > thresh else \"black\")\n",
    "\n",
    "    plt.tight_layout()\n",
    "    plt.ylabel('True label')\n",
    "    plt.xlabel('Predicted label')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute confusion matrix\n",
    "def compute_confusion_matrix(all_true, all_pred):\n",
    "    class_names=['N', 'S', 'V', 'F', 'Q']\n",
    "\n",
    "    cnf_matrix = confusion_matrix(all_true, all_pred)\n",
    "    np.set_printoptions(precision=2)\n",
    "\n",
    "    # Plot non-normalized confusion matrix\n",
    "    plt.figure()\n",
    "    plot_confusion_matrix(cnf_matrix, classes=class_names,\n",
    "                          title='Confusion matrix, without normalization')\n",
    "\n",
    "    # Plot normalized confusion matrix\n",
    "    plt.figure()\n",
    "    plot_confusion_matrix(cnf_matrix, classes=class_names, normalize=True,\n",
    "                          title='Normalized confusion matrix')\n",
    "\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion matrix, without normalization\n",
      "[[17781   224    70    32    11]\n",
      " [   69   471    13     2     1]\n",
      " [   11     3  1401    30     3]\n",
      " [    8     0     8   146     0]\n",
      " [    9     1     7     1  1590]]\n",
      "Normalized confusion matrix\n",
      "[[9.81e-01 1.24e-02 3.86e-03 1.77e-03 6.07e-04]\n",
      " [1.24e-01 8.47e-01 2.34e-02 3.60e-03 1.80e-03]\n",
      " [7.60e-03 2.07e-03 9.68e-01 2.07e-02 2.07e-03]\n",
      " [4.94e-02 0.00e+00 4.94e-02 9.01e-01 0.00e+00]\n",
      " [5.60e-03 6.22e-04 4.35e-03 6.22e-04 9.89e-01]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "compute_confusion_matrix(all_true_r, all_pred_r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion matrix, without normalization\n",
      "[[17999    94    15     5     5]\n",
      " [   87   461     5     1     2]\n",
      " [   29     5  1388    22     4]\n",
      " [   12     1     7   142     0]\n",
      " [    9     1     2     1  1595]]\n",
      "Normalized confusion matrix\n",
      "[[9.93e-01 5.19e-03 8.28e-04 2.76e-04 2.76e-04]\n",
      " [1.56e-01 8.29e-01 8.99e-03 1.80e-03 3.60e-03]\n",
      " [2.00e-02 3.45e-03 9.59e-01 1.52e-02 2.76e-03]\n",
      " [7.41e-02 6.17e-03 4.32e-02 8.77e-01 0.00e+00]\n",
      " [5.60e-03 6.22e-04 1.24e-03 6.22e-04 9.92e-01]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "compute_confusion_matrix(all_true_f, all_pred_f)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
